Camera arrays, which may be provided on tablets or smartphones for example, may be provided to capture multiple images of the same scene except from different angles. These images can then be used to generate a 3D space or depth map, and accurately locate objects form the scene and into the 3D space. Some of these camera arrays have a layout that arranges the cameras in a diagonal position relative to each so that rectified images from the cameras form a diagonal epipolar line between matching points between a pair of the cameras in the camera array.
With the processing of multiple images from a camera array, pixel disparities may be computed for many different applications. A disparity is the pixel location difference of a same 3D point from one image to another image. The disparity may be used for applications such as 3D depth extraction, refocus, measurement, layer effect, view interpolation, and so forth. It is convenient to maintain the disparity values as integer numbers that may correspond to a number of pixels in a grid of pixels to relate a distance, and for a number of applications and for processing efficiency. In order to determine the correspondence of points (and therefore the disparity) in a search for a disparity value along a diagonal epipolar line, however, the disparity is measured along the line in the diagonal. In this case, the x and y components of the diagonal integer disparity are not integers, and therefore do not correspond to an exact pixel location on a grid of pixels. Rounding by providing integer x and y values and to the nearest pixel location often results in some pixel points (and in turn the disparity length represented by the point) along the epipolar line being without a disparity value, and other point values along the epipolar line having two disparity positions along the line. This results in inaccurate disparities for some of the image points that can result in inaccurate 3D depth measurement of objects in the scene or other visible artifacts.